home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / progutil / stdwin.zoo / test / thand.c < prev    next >
C/C++ Source or Header  |  1990-03-30  |  998b  |  65 lines

  1. /* Test wungetevent from signal handler */
  2.  
  3. #include "stdwin.h"
  4. #include <signal.h>
  5.  
  6. #define SPECIAL 1000
  7.  
  8. TEXTEDIT *tb;
  9.  
  10. void
  11. drawproc(win, l, t, r, b)
  12.     WINDOW *win;
  13. {
  14.     tedraw(tb);
  15. }
  16.  
  17. void
  18. handler() {
  19.     EVENT e;
  20.     e.type= WE_COMMAND;
  21.     e.u.command= SPECIAL;
  22.     wungetevent(&e);
  23. }
  24.  
  25. main(argc, argv)
  26.     int argc;
  27.     char **argv;
  28. {
  29.     WINDOW *win;
  30.     int width, height;
  31.     
  32.     winit();
  33.     signal(SIGINT, handler);
  34.     if (argc >= 3) {
  35.         int h= atoi(argv[1]), v= atoi(argv[2]);
  36.         wsetdefwinpos(h, v);
  37.     }
  38.     
  39.     win= wopen("Textedit", drawproc);
  40.     wgetwinsize(win, &width, &height);
  41.     wsetdocsize(win, width, height);
  42.     
  43.     tb= tealloc(win, 0, 0, width);
  44.     tereplace(tb, "Hello, world\n--Guido van Rossum");
  45.     
  46.     for (;;) {
  47.         EVENT e;
  48.         wgetevent(&e);
  49.         if (e.type == WE_COMMAND) {
  50.             if (e.u.command == WC_CLOSE ||
  51.                 e.u.command == WC_CANCEL)
  52.                 break;
  53.             else if (e.u.command == SPECIAL) {
  54.                 wmessage("Got event from handler");
  55.                 continue;
  56.             }
  57.         }
  58.         (void) teevent(tb, &e);
  59.     }
  60.     tefree(tb);
  61.     wclose(win);
  62.     wdone();
  63.     exit(0);
  64. }
  65.